package com.cr.business.service;

import com.cr.business.domain.TbUserBaseInfo;
import com.cr.business.domain.dto.UserReqDto;
import com.cr.business.domain.dto.app.RegDto;
import com.cr.business.domain.dto.app.UpdatePasswordDto;
import com.cr.business.domain.dto.app.UpdatePhoneDto;
import com.cr.business.domain.vo.UserDetailInfoVo;

import java.util.List;
import java.util.Map;

/**
 * 用户基本信息Service接口
 * 
 * @author tang
 * @date 2025-08-19
 */
public interface ITbUserBaseInfoService 
{
    /**
     * 查询用户基本信息列表
     *
     * @param dto 用户查询参数
     * @return 用户基本信息集合
     */
    List<TbUserBaseInfo> selectTbUserBaseInfoList(UserReqDto dto);

    /**
     * 批量删除用户基本信息
     *
     * @param userIds 需要删除的用户基本信息主键集合
     */
    int deleteTbUserBaseInfoByUserIds(String[] userIds);

    /**
     * 修改用户状态
     * @param info 参数
     */
    int updateStatus(TbUserBaseInfo info);

    /**
     * 获取用户详情
     * @param userId 用户ID
     */
    UserDetailInfoVo getDetailInfo(String userId, String entityId);
    TbUserBaseInfo getUserInfo(String userId);

    /**
     * 用户注册
     * @param regDto 参数
     */
    int register(RegDto regDto);

    /**
     * 用户忘记密码
     * @param regDto 参数
     */
    int forgetPassword(RegDto regDto);

    /**
     * 修改头像
     * @param userId 用户ID
     * @param avatar 头像地址
     */
    boolean updateAvatar(String userId, String avatar);

    /**
     * 修改昵称
     * @param userId 用户ID
     * @param nickName 昵称
     */
    int updateNickName(String userId, String nickName);

    /**
     * 修改密码
     * @param param 参数信息
     */
    int updatePassword(UpdatePasswordDto param);

    /**
     * 修改手机号码
     * @param param 参数
     */
    int updatePhone(UpdatePhoneDto param);

    /**
     * 生成临时密码
     * @param userId 用户ID
     */
    Map<String, Object> generateTempPassword(String userId);
}
